home *** CD-ROM | disk | FTP | other *** search
-
-
- The gopher.query.patch is patch for the Unix gopher client, and gopher server
- version 1.01, to add the 'q' type.
-
- You need strtok for the client. If you don't have it, a copy
- (from ftp.uu.net:packages/bsd-sources/lib/libc/string/).
- provided at the end of this file.
-
- To set up a query type, create your favorite .Link type file like so:
-
- Name=Finger @Stanford.EDU
- Type=q
- ReturnType=0
- Prompt=Enter finger query
- Port=79
- Path=
- Host=stanford.edu
-
-
- If you don't want to/can't modifiy the gopherd, you can create a Link that
- looks like the following instead:
-
- Name=Finger @Stanford.EDU
- Type=q
- Port=79
- Path=0|1|Enter finger query
- Host=stanford.edu
-
- Notes:
-
- The formating is scrict. If you are using Type=q then you must
- have ReturnType= and at least 1 Prompt= specified.
-
- You can have multiple prompts like so:
-
- Name=Query Example
- Type=q
- ReturnType=0
- Prompt=Value 1
- Prompt=Value 2
- Prompt=Value 3
- Prompt=Value 4
- Port=4325
- Path=example
- Host=slapshot.stanford.edu
-
- In fact, give that link a try. The following perl script is sitting on that
- port:
-
- #!/usr/local/bin/perl
-
- #$|=1;
- ($<,$>) = (-2,-2) unless $>;
- $_ = <STDIN>; s/\r//; s/\n//;
- print "\n";
- print "I was passed the following: $_\n";
- print "\n";
- print "Splitting that on tabs gives the following:\n";
- print "\n";
- @stuff = split(/\t/,$_,10);
-
- $args=0;
- foreach $foo (@stuff) {
- print "arg[$args] = $foo\n";
- $args++;
- }
-
- print "\n";
-
-
-
- #---------------------------------
-
- /*
- * Copyright (c) 1988 Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
- #if defined(LIBC_SCCS) && !defined(lint)
- static char sccsid[] = "@(#)strtok.c 5.8 (Berkeley) 2/24/91";
- #endif /* LIBC_SCCS and not lint */
-
- #include <stddef.h>
- #include <string.h>
-
- char *
- strtok(s, delim)
- register char *s;
- register const char *delim;
- {
- register char *spanp;
- register int c, sc;
- char *tok;
- static char *last;
-
-
- if (s == NULL && (s = last) == NULL)
- return (NULL);
-
- /*
- * Skip (span) leading delimiters (s += strspn(s, delim), sort of).
- */
- cont:
- c = *s++;
- for (spanp = (char *)delim; (sc = *spanp++) != 0;) {
- if (c == sc)
- goto cont;
- }
-
- if (c == 0) { /* no non-delimiter characters */
- last = NULL;
- return (NULL);
- }
- tok = s - 1;
-
- /*
- * Scan token (scan for delimiters: s += strcspn(s, delim), sort of).
- * Note that delim must have one NUL; we stop if we see that, too.
- */
- for (;;) {
- c = *s++;
- spanp = (char *)delim;
- do {
- if ((sc = *spanp++) == c) {
- if (c == 0)
- s = NULL;
- else
- s[-1] = 0;
- last = s;
- return (tok);
- }
- } while (sc != 0);
- }
- /* NOTREACHED */
- }
-
-
-
-
-
-
-